/**
 * 
 */
package net.sahv.bdyz.service;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import net.sahv.bdyz.mapper.FabricMapper;
import net.sahv.bdyz.mapper.FabricMorepicMapper;
import net.sahv.bdyz.mapper.FabricPicMapper;
import net.sahv.bdyz.model.Fabric;
import net.sahv.bdyz.model.FabricMorepic;
import net.sahv.bdyz.model.FabricPic;
import net.sahv.bdyz.util.PageInfo;

/**
 * @author 张天敏
 * @date 日期：2016年8月3日 时间：下午4:22:15
 */
@Service
public class FabricService {
	
	@Autowired
	private FabricMapper fabricMapper;
	@Autowired
	private FabricPicMapper fabricPicMapper;
	@Autowired
	private FabricMorepicMapper fabricMorePicMapper;
	
    public int deleteByPrimaryKey(Integer fId){
    	return fabricMapper.deleteByPrimaryKey(fId);
    }

	/**
	 * 
	 * @author 作者 : 任凯伟
	 * @date 创建时间：2016年8月8日 下午5:07:07
	 * @version 1.0
	 * @param request 
	 * @see 添加面料
	 * @param
	 * @parameter
	 * @since
	 * @return
	 * @throws IOException 
	 */
	@Transactional
	public int insert(Fabric record, String[] imgPaths, String[] imgPaths1, HttpServletRequest request) throws IOException {
		//默认图片的名称和图片缩略图的名称是相同的名称
		/*Map<String, String> mapUrls = LoadCfgUtil.loadCfg();
		String uploadImgPath=mapUrls.get("local.uploadImgPath");
		String compression=mapUrls.get("local.uploadImgPath.compression");
		String proString=mapUrls.get("compressionRatio.nomal");
		
		String path = request.getContextPath();
		String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path;
		
		//传入图片的路径
		String inputPath=basePath+uploadImgPath+record.getfImg();
		//输出图片的路径
		String outputPath=request.getServletContext().getRealPath(compression+record.getfImg());
		//压缩比例
		Integer pro=Integer.valueOf(proString);
		//生成面料压缩图片
		ImgCompress.initCompression(inputPath, outputPath, pro);*/
		
		int count = fabricMapper.insert(record);
		Date now = new Date();
		List<FabricPic> pList = new ArrayList<FabricPic>();
		for (int i = 0; i < imgPaths.length; i++) {
			if (imgPaths[i] != null && imgPaths[i] != "" && imgPaths[i].length() > 0) {
				//批量生成面料详情压缩图片
				//传入图片的路径
				/*String inputPath2=basePath+uploadImgPath+imgPaths[i];
				//输出图片的路径
				String outputPath2=request.getServletContext().getRealPath(compression+imgPaths[i]);
				ImgCompress.initCompression(inputPath2, outputPath2, pro);*/
				//保存上传图片路径
				FabricPic fabricPic = new FabricPic();
				fabricPic.setFpCreateTime(now);
				fabricPic.setfId(record.getfId());
				fabricPic.setFpImg(imgPaths[i]);
				fabricPic.setFpIsDelete(0);
				pList.add(fabricPic);
			}
		}
		if (pList.size() > 0) {
			fabricPicMapper.batchInsert(pList);
		}
		List<FabricMorepic> morepList = new ArrayList<FabricMorepic>();
		for (int i = 0; i < imgPaths1.length; i++) {
			if (imgPaths1[i] != null && imgPaths1[i] != "" && imgPaths1[i].length() > 0) {				
				//保存上传图片路径
				FabricMorepic fabricmorePic = new FabricMorepic();
				fabricmorePic.setFmpCreateTime(now);
				fabricmorePic.setfId(record.getfId());
				fabricmorePic.setFmpImg(imgPaths1[i]);
				fabricmorePic.setFmpIsdelete(0);
				morepList.add(fabricmorePic);
			}
		}
		if (morepList.size() > 0) {
			fabricMorePicMapper.batchInsert(morepList);
		}		
		return count;
    }

    public Fabric selectByPrimaryKey(Integer fId){
    	return fabricMapper.selectByPrimaryKey(fId);
    }

    public List<Fabric> selectAll(){
    	return fabricMapper.selectAll();
    }

    int updateByPrimaryKey(Fabric record){
    	return fabricMapper.updateByPrimaryKey(record);
    }

	/**
	 * @author 作者 : 任凯伟
	 * @date 创建时间：2016年8月4日 下午3:43:44
	 * @version 1.0
	 * @see 默认首页查询面料列表
	 * @param
	 * @parameter
	 * @since
	 * @return
	 */
	public List<Fabric> findForMain() {
		return fabricMapper.findForMain();
	}

	/**
	 * @author 作者 : 任凯伟
	 * @date 创建时间：2016年8月4日 下午6:03:02
	 * @version 1.0
	 * @see 分页查询花型列表信息
	 * @param
	 * @parameter
	 * @since
	 * @return
	 */
	public List<Map<String, Object>> getByPage(PageInfo pageInfo, String where, String order, Integer mId) {
		Map<String, Object> param = new HashMap<String, Object>();
		param.put("pageSize", pageInfo.getPageSize());
		param.put("begin", (pageInfo.getPage() - 1) * pageInfo.getPageSize());
		param.put("where", where);
		param.put("order", order);
		param.put("mId", mId);
		List<Map<String, Object>> m = fabricMapper.getByPage(param);
		return m;
	}

	/**
	 * @author 作者 : 任凯伟
	 * @date 创建时间：2016年8月6日 上午10:29:28
	 * @version 1.0
	 * @see
	 * @param
	 * @parameter
	 * @since
	 * @return
	 */
	public Fabric getDetailById(Integer fId) {
		return fabricMapper.selectByPrimaryKey(fId);
	}

	/**
	 * @author 作者 : 任凯伟
	 * @date 创建时间：2016年8月8日 上午9:41:24
	 * @version 1.0
	 * @see
	 * @param
	 * @parameter
	 * @since
	 * @return
	 */
	public List<Map<String, Object>> getList(Map<String, Object> param) {
		return fabricMapper.getList(param);
	}

	/**
	 * @author 作者 : 任凯伟
	 * @date 创建时间：2016年8月8日 上午9:41:32
	 * @version 1.0
	 * @see
	 * @param
	 * @parameter
	 * @since
	 * @return
	 */
	public Integer getTotalCount(String where) {
		return fabricMapper.getTotalCount(where);
	}

	/**
	 * @author 作者 : 任凯伟
	 * @date 创建时间：2016年8月8日 上午11:47:29
	 * @version 1.0
	 * @see
	 * @param
	 * @parameter
	 * @since
	 * @return
	 */
	public int delete(Integer[] id) {
		return fabricMapper.delete(id);
	}

	/**
	 * @author 作者 : 任凯伟
	 * @date 创建时间：2016年8月9日 上午8:49:33
	 * @version 1.0
	 * @see
	 * @param
	 * @parameter
	 * @since
	 * @return
	 */
	public Fabric findById(Integer id) {
		return fabricMapper.selectByPrimaryKey(id);
	}

	/**
	 * @author 作者 : 任凯伟
	 * @date 创建时间：2016年8月9日 上午10:22:54
	 * @version 1.0
	 * @see
	 * @param
	 * @parameter
	 * @since
	 * @return
	 */
	@Transactional
	public int update(Fabric fabric, String[] imgPaths,String[] imgPaths1) {
		int count = fabricMapper.updateByPrimaryKey(fabric);
		fabricPicMapper.deleteByFid(fabric.getfId());
		fabricMorePicMapper.deleteByFid(fabric.getfId());
		Date now = new Date();
		List<FabricPic> pList = new ArrayList<FabricPic>();
		for (int i = 0; i < imgPaths.length; i++) {
			if (imgPaths[i] != null && imgPaths[i] != "" && imgPaths[i].length() > 0) {
				FabricPic fabricPic = new FabricPic();
				fabricPic.setFpCreateTime(now);
				fabricPic.setfId(fabric.getfId());
				fabricPic.setFpImg(imgPaths[i]);
				fabricPic.setFpIsDelete(0);
				pList.add(fabricPic);
			}
		}
		if (pList.size() > 0) {
			fabricPicMapper.batchInsert(pList);
		}
		List<FabricMorepic> morepList = new ArrayList<FabricMorepic>();
		for (int i = 0; i < imgPaths1.length; i++) {
			if (imgPaths1[i] != null && imgPaths1[i] != "" && imgPaths1[i].length() > 0) {				
				//保存上传图片路径
				FabricMorepic fabricmorePic = new FabricMorepic();
				fabricmorePic.setFmpCreateTime(now);
				fabricmorePic.setfId(fabric.getfId());
				fabricmorePic.setFmpImg(imgPaths1[i]);
				fabricmorePic.setFmpIsdelete(0);
				morepList.add(fabricmorePic);
			}
		}
		if (morepList.size() > 0) {
			fabricMorePicMapper.batchInsert(morepList);
		}		
		return count;
	}

	/**
	 * 查询面料
	 * @author 张天敏
	 * @date 日期：2016年8月13日 时间：上午10:37:08
	 * @param ffId
	 * @return
	 */
	public List<Fabric> selectByFIngredients(Integer ffId) {
		return fabricMapper.selectByFIngredients(ffId);
	}

	/**
	 * @author 作者 : 任凯伟
	 * @date 创建时间：2016年8月18日 下午3:10:27
	 * @version 1.0
	 * @see
	 * @param
	 * @parameter
	 * @since
	 * @return
	 */
	public int findByNo(String fNo) {
		return fabricMapper.findByNo(fNo);
	}

	/**
	 * @author 作者 : 任凯伟
	 * @date 创建时间：2016年8月18日 下午3:17:39
	 * @version 1.0
	 * @see
	 * @param
	 * @parameter
	 * @since
	 * @return
	 */
	public int findByNoAndId(String fNo, Integer fId) {
		return fabricMapper.findByNoAndId(fNo, fId);
	}

	public Fabric selectByNo(String fNo) {
		return fabricMapper.selectByNo(fNo);
	}

	/**
	 * @author 作者 : 任凯伟
	 * @date 创建时间：2016年10月14日 上午11:48:42
	 * @version 1.0
	 * @see
	 * @param
	 * @parameter
	 * @since
	 * @return
	 */
	public int getCountFabricFilter(Integer ffId) {
		return fabricMapper.getCountFabricFilter(ffId);
	}

}
